bitkeeper revision 1.1159.212.111 (4207a372uscrEafJDzNOVuj8gyt_Fw)
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Mon, 7 Feb 2005 17:20:50 +0000 (17:20 +0000)
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Mon, 7 Feb 2005 17:20:50 +0000 (17:20 +0000)
SYSCALL fixes.
Signed-off-by: keir.fraser@cl.cam.ac.uk
xen/arch/x86/boot/x86_64.S
xen/arch/x86/x86_64/entry.S
xen/arch/x86/x86_64/traps.c
xen/include/asm-x86/config.h
xen/include/public/arch-x86_64.h

index d3414a38169d35a62f51c37b91fa1e12bb4e297c..9d615231384b7f80db1e0ad3ec1899c58f4f8529 100644 (file)
@@ -193,8 +193,8 @@ ENTRY(gdt_table)
         .quad 0x00af9a000000ffff     /* 0x0810 ring 0 code, 64-bit mode   */
         .quad 0x00cf92000000ffff     /* 0x0818 ring 0 data                */
         .quad 0x00cffa000000ffff     /* 0x0823 ring 3 code, compatibility */
-        .quad 0x00affa000000ffff     /* 0x082b ring 3 code, 64-bit mode   */
-        .quad 0x00cff2000000ffff     /* 0x0833 ring 3 data                */
+        .quad 0x00cff2000000ffff     /* 0x082b ring 3 data                */
+        .quad 0x00affa000000ffff     /* 0x0833 ring 3 code, 64-bit mode   */
         .quad 0x0000000000000000     /* unused                            */
         .fill 4*NR_CPUS,8,0          /* space for TSS and LDT per CPU     */
 
index 7dd3fd342cbe63f9cdef7e0fb080db560aa5260c..447b77e9b0a073ba50dfa8a8ad2a206dcfda8b83 100644 (file)
 #include <public/xen.h>
 
 ENTRY(hypercall)
+        sti
         movl  $__GUEST_SS,8(%rsp)
         pushq %r11
         pushq $__GUEST_CS
         pushq %rcx
         pushq $0
         SAVE_ALL
-       andq  $(NR_hypercalls-1),%rax
-        leaq  SYMBOL_NAME(exception_table)(%rip),%rcx
+        andq  $(NR_hypercalls-1),%rax
+        leaq  SYMBOL_NAME(hypercall_table)(%rip),%rcx
         callq *(%rcx,%rax,8)
         RESTORE_ALL
         addq  $8,%rsp
@@ -42,7 +43,7 @@ error_code:
         movl  XREGS_entry_vector(%rsp),%eax
         leaq  SYMBOL_NAME(exception_table)(%rip),%rdx
         callq *(%rdx,%rax,8)
-       jmp   restore_all_xen
+        jmp   restore_all_xen
 
 ENTRY(divide_error)
         pushq $0
index 323ea6865cfae4255588263e0f1117a49d54c8a0..96ae0424b4d6366503782a1abae2b0e8c1c980c3 100644 (file)
@@ -221,7 +221,7 @@ void __init percpu_traps_init(void)
      * Common SYSCALL parameters.
      */
 
-    wrmsr(MSR_STAR,  0, (FLAT_RING3_CS64<<16) | __HYPERVISOR_CS); 
+    wrmsr(MSR_STAR, 0, (FLAT_RING3_CS32<<16) | __HYPERVISOR_CS);
     wrmsr(MSR_SYSCALL_MASK, ~EF_IE, 0U); /* disable interrupts */
 }
 
index 377d18975c823d47287c6a41fd0c75edba1cfe28..25d1a7657a97ae71c3ccd1f4f53430bb16aad784 100644 (file)
@@ -191,9 +191,9 @@ extern void __out_of_line_bug(int line) __attribute__((noreturn));
 #define __HYPERVISOR_DS32 0x0818
 #define __HYPERVISOR_DS   __HYPERVISOR_DS64
 
-#define __GUEST_CS        0x082b
+#define __GUEST_CS        0x0833
 #define __GUEST_DS        0x0000
-#define __GUEST_SS        0x0833
+#define __GUEST_SS        0x082b
 
 /* For generic assembly code: use macros to define operation/operand sizes. */
 #define __OS "q"  /* Operation Suffix */
index 4ab9bcca79d351418031101dab6740b47d1dda26..530e2431d14bc9e3d2e1c5f05f4b7c34833ed522 100644 (file)
  */
 
 #define FLAT_RING3_CS32 0x0823  /* GDT index 260 */
-#define FLAT_RING3_CS64 0x082b  /* GDT index 261 */
-#define FLAT_RING3_DS32 0x0833  /* GDT index 262 */
+#define FLAT_RING3_CS64 0x0833  /* GDT index 261 */
+#define FLAT_RING3_DS32 0x082b  /* GDT index 262 */
 #define FLAT_RING3_DS64 0x0000  /* NULL selector */
-#define FLAT_RING3_SS32 0x0833  /* GDT index 262 */
-#define FLAT_RING3_SS64 0x0833  /* GDT index 262 */
+#define FLAT_RING3_SS32 0x082b  /* GDT index 262 */
+#define FLAT_RING3_SS64 0x082b  /* GDT index 262 */
 
 #define FLAT_GUESTOS_DS64 FLAT_RING3_DS64
 #define FLAT_GUESTOS_DS32 FLAT_RING3_DS32